用户定义一个VTN,用户映射VTN到物理网络,此物理网络能根据VTN定义来启用网络通信。且随着VTN的定义,L2/3层传输功能和基于流的流量控制功能(过滤和重定向)将被实现。
下表显示了VTN的构成元件。在VTN中,虚拟网络通过虚拟节点(包括vBridge、虚拟路由器等)、虚拟接口、链路构成。它可以配置具有L2/3层传递函数的网络,连接由虚拟链路取得虚拟节点上的虚拟端口。
虚拟网络结构的例子:图中VRT是指虚拟路由vRouter,BR1和BR2是作为虚拟桥vBridge。vRouter和vBridge的端口被用来连接vLinks。
(1)映射物理网络资源
映射物理网络资源到虚拟网络结构。映射被OpenFlow交换机传输或者接收的每个包定义的具体虚拟网络,或者在OpenFlow交换机里传输或接收包的具体端口。主要有两种映射方法,当一个包从OpenFlow交换机被接收到时,端口映射搜索相应的映射的定义,然后VLAN映射被查找,根据第一个匹配映射,这个包被相关的vBridge映射。
- 学习终端信息。VTN学习所属VTN的终端信息,存储相关交换机端口所连接终端的MAC地址和VLAN ID。
- 终端信息衰老化。在VTN中,被VTN学习的终端信息,将一直维持到从终端一直发送数据流。如果终端断开与VTN的连接,衰退时间将开始计时,且终端信息将维持到时间超时。
有关映射配置的例子如下图所示。BR1的端口映射到OFS1的端口GBE0/1,是通过用端口映射,接受自OFS1的端口GBE0/1的包被视为BR1端口相应的包。BR2映射到VLAN200通过用VLAN映射,接收自任何交换机任何端口的带有VALN标签200的包被视为BR2端口相应的包。
(2) vBridge功能
根据目的MAC地址,vBridge提供桥bridge功能,传输数据包到预期端口。当目的MAC地址已经学习到时,vBridge查找MAC地址表并传输数据包到相应的虚拟端口;当目的MAC地址没有学习到时,它传输数据包到所有的虚拟端口除了正在接收的端口(就是指泛洪)。
MAC地址被学习如下:
MAC学习。vBridge学习到已连接主机的MAC地址,每个接收帧的源MAC地址被映射到正在接收的虚拟端口,且这个MAC地址被存储在MAC地址表中,这个MAC地址表被创建在per-vBridge基础上。
MAC地址老化。只要主机返回ARP消息,存储在MAC地址表中的MAC地址就会被保留;否则当主机断开连接后,MAC仍存在直到老化时间超时。
为了可以由vBridge学习MAC地址静态,可以手动注册MAC地址。
(3)vRouter功能
在vBridges之间,vRouter传输IPv4的包,vRouter支持路由、ARP学习、ARP老化功能。简单介绍一下支持的功能:
路由功能。当一个IP地址被注册到一个vRouter的虚拟端口时,这个端口的路由信息默认被注册;也可以为一个虚拟端口静态注册路由信息。
ARP学习功能。vRouter通过为每个主机发送ARP请求以及介绍ARP响应获取主机的IP、MAC、和虚拟端口,并将这些信息存储到路由域的ARP表中。如果再次发送ARP请求也没有应答,则经过一个老化时间后就会将ARP表项删除。支持静态ARP学习,即可以手动注册ARP表项信息。
DHCP中继代理功能。vRouter也提供DHCP中继代理功能。
(4)流过滤功能
流过滤功能与ACL(访问控制列表Access Control List)相似。它可以允许或禁止只有某一种满足特定条件的数据包的通信。此外,它可以执行重定向处理程序——站点路由,不同于存在的ACL。流过滤也能应用在VTN中vNode的任何一个端口,控制传递接口的数据包。
在流过滤器中被指定的匹配条件如下(注:可以指定多个条件的组合):
- 源MAC地址(Source MAC address);
- 目的MAC地址(Destination MAC address);
- MAC ether 类型(MAC ether type);
- VLAN优先级(VLAN Priority);
- 源IP地址(Source IP address);
- 目的IP地址(Destination IP address);
- DSCP;
- IP 协议(IP Protocol);
- TCP/UDP 源端口(TCP/UDP source port);
- TCP/UDP 目的端口(TCP/UDP destination port);
- ICMP类型(ICMP type);
- ICMP代码(ICMP code)。
动作的类型如下表所示。能够使匹配特定条件的数据包,通过或重定向到一个指定的服务器上。例如,流的路径可以将一个指定终端发送的所有数据包进行改变,这取决于目的IP地址。也支持VLAN优先级控制和DSCP标记。
下面的例子显示流过滤功能怎样工作:
当一个在虚拟网络中传送的数据包通过一个虚拟接口时,如果有任何被流过滤器匹配的条件,则将判断这个传输的数据包是否匹配它。
如果数据包匹配这个条件,则执行流表对应的动作。下面的例子显示在该网络配置下,如果数据包匹配了BR1的流表,则将丢弃这个数据包。